# 构建对象对战平台object_play
# 1 英雄一代战机（战斗力60）与敌军战机（战斗力70）对抗。英雄1代战机失败！
# 2 卧薪尝胆，英雄二代战机（战斗力80）出场！，战胜敌军战机！
# 3 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗  attack / power
# 思路分析: 抽象战机类 HeroFighter  AdvHeroFighter；敌机EnemyFighter; 构建对象战斗平台,使用多态实现

# 封装 继承 多态
# 封装: 在函数调用的时候,增大了信息交换的颗粒度,对软件行业是一个福音
# 继承: 代码复用 孩子可以使用老爹的东西
# 多态: 相当于老爹可以使用子类方法

# 1代战机
class HeroFighter(object):
    def power(self):
        return 70


# 2代战机
class AdvHeroFighter(HeroFighter):
    def power(self):
        return 90


class EnemyFighter(object):
    def attack(self):
        return 80

class AAAA(object):
    def power(self):
        return 100


# 搭建战斗场景 让对象唱戏
def object_play(myobj, enemyfighter):
    if myobj.power() > enemyfighter.attack():
        print('英雄战机胜利 敌军失败')
    else:
        print('英雄战机失败 敌军胜利')

# def object_play2(herofighter:HeroFighter, enemyfighter):
#     if herofighter.power() > enemyfighter.attack():
#         print('英雄战机胜利 敌军失败')
#     else:
#         print('英雄战机失败 敌军胜利')

if __name__ == '__main__':

    # 1 准备对象
    herofighter = HeroFighter()
    advherofighter = AdvHeroFighter()
    enemyfighter = EnemyFighter()

    # # 2 战斗第1次
    # object_play(herofighter, enemyfighter)
    #
    # # 3 战斗第2次
    # object_play(advherofighter, enemyfighter)

    # 第一次战斗
    if herofighter.power() > enemyfighter.attack():
        print('英雄战机胜利 敌军失败')
    else:
        print('英雄战机失败 敌军胜利')

    # 第一次战斗
    if advherofighter.power() > enemyfighter.attack():
        print('英雄战机胜利 敌军失败')
    else:
        print('英雄战机失败 敌军胜利')



#
# if __name__ == '__main__':
#
#     # 1 准备对象
#     herofighter = HeroFighter()
#     advherofighter = AdvHeroFighter()
#     enemyfighter = EnemyFighter()
#
#     # 2 战斗第1次
#     object_play(herofighter, enemyfighter)
#
#     # 3 战斗第2次
#     object_play(advherofighter, enemyfighter)
#
#     # 4 第3次战斗
#     mya = AAAA()
#     # object_play(mya, enemyfighter)


    pass
